Computer networks are in general well known and broadly speaking comprise a system by way of which computing devices, such as computers and data storage media, can communicate with each other. The communications system comprises a network of interconnected communication hubs via which communications between the various devices connected to the network travel. There are two well known types of communication hub, repeaters and bridges. Each of these types of devices has a number of ports via which it can receive and transmit communication traffic and therefore by way of which it can be connected either to another communication hub or to a user of the network. The difference between repeaters and bridges is basically in how they handle traffic arriving at their various ports.
A repeater is the simplest form of communication hub and simply retransmits any communication it receives on any one port to all of its other ports. On the simple level therefore it can clearly be seen that if all the users of a network are connected to each other via repeaters it is guaranteed that they will all receive all the communication on the network and therefore will receive all communications intended for themselves. Such an arrangement is however not practical for a useful number of users, because the volume of traffic which is being transmitted to the whole network becomes unreasonably large and cannot be copied by the bandwidth of the communication links.
A bridge on the other hand, when it receives a communication on a particular port, tries to decide if it is necessary to send it to all of its other ports, or if it can ensure that the communication reaches its intended destination by transmitting it from only one or some of its other ports. In a computer network all of the users have assigned to them addresses, and, in a known fashion, a bridge builds up information concerning which of its ports are associated with which users of the network. There are well known ways of building up and ageing out this information to account for reconfiguration of the network, and this aspect does not form a particular part of the present invention. However, it is sufficient to know that it is possible for a bridge to learn information of this type. Therefore, when a bridge receives a communication on one of its ports, it makes an assessment of whether it knows which of its other ports is associated with the intended destination address and forwards the communication only to the relevant port or ports. If the bridge does not have stored in it details of the destination address in question it will forward the communication to all of its other ports in a similar fashion to a repeater. However, in most network protocols, such as Ethernet, each communication must be answered by the intended destination address by an acknowledgement communication. It will therefore be the case that once a bridge has forwarded to all of its ports a communication intended for a destination address it does not yet know it will very shortly receive acknowledgement packet, on the basis of which it can learn about the address in question.
Another type of communication which occurs in such networks is a broadcast communication. This is a communication sent out by a user of the network which is intended to reach an be read by all of the other users. If a bridge receives a broadcast communication it therefore simply retransmits it on all of the other ports.
In network construction it is relatively common to connect the components of the network essentially in a star or tree configuration. In such an arrangement there is only one route between any pair of users. However it is also known to provide secondary or backup communication paths which run in parallel to other communication paths, for instance communication paths which are particularly important to the functioning of the overall network so as to provide resilience in the network in the case of faults. While providing advantages in terms of resilience, such redundant links can cause problems in that there is provided a loop around which communications may travel. It is also possible for loops to occur non intentionally in particular in large networks. Such loops cause particular problems with broadcast communications because such communications are simply forwarded by any communication hub they reach to all of the other ports and therefore the communication may simply be transmitted repeatedly around the loop using up most if not all of the available bandwidth in the loop, consequently making the network unusable for other users.
In the light of this problem it has been proposed to implement a system known as "spanning tree". This will be explained in more detail below, but essentially the spanning tree protocol identifies loops of the type mentioned above which may potentially cause problems and breaks the loops by configuring ports of bridges within the network accordingly. In particular spanning tree can identify one port on a particular bridge forming part of the unwanted loop and can effectively switch off that port to normal communication until such time as a fault occurs in the network and the redundant backup link is required.
There is also proposed a slightly different type of communication hub for use in computer networks which has been designated the "half bridge". In a half bridge, there are a number of ports to which a plurality of local users may be connected, possibly via repeaters or other bridges. These local ports function like the ports described above in bridges in that they learn the addresses of the users connected to them and will only transmit out of those ports communications intended for the known users. Additionally, there is one port in a half bridge which is configured as a backbone or downlink port. This port is connected is to the remainder of the network. A half bridge is distinct from a normal bridge as described above because it does not learn on the designated backbone or downlink port. When a half bridge receives a communication on one of its local ports it decides whether it knows the destination address as being associated with one of its other local ports. If it is it is simply forwarded to the port in question. If the half bridge does not know the destination address in question it assumes that the destination address is on the rest of the network and forwards the communication via the backbone port. A half bridge has advantages over a normal bridge in that it is not necessary for it to learn potentially addresses for all of the users on a large network. This therefore reduces the requirements for the memory in the half bride enabling it to be produced at lower cost.
It has however been found that it is difficult to use a half bridge in a network which is implementing the spanning tree arrangement. Problems can occur if a loop appears in the network which includes the communication link out of the backbone port of a half bridge. This would mean that a second parallel link into the main network had been made via one of the local ports of the half bridge. The spanning tree algorithm would identify this loop and therefore there is a possibility that the spanning tree algorithm would choose the backbone port of the half bridge as the port which should be blocked in order to break the undesirable loop. This would mean that all of the communication to the remainder of the network from the half bridge would be passed via the local port through which the redundant link had been made. Because that local port is set up to learn the addresses associated with it, the half bridge would then be trying to learn the addresses of all the users in the network in the same way as a normal bridge. However a half bridge is not capable of doing this and therefore the performance of the network would drop considerably.